﻿using System;

namespace Data
{
    public enum Operation
    {
        None = 0,
        Attack,
        SpAttack,
        Skill,
        Move,
        Jump,
        Grab,

        // 被动输入
        StandHit,           // 一般受击
        KnockOut,           // 击飞
        KnockBack,          // 击退
        KnockDown,          // 击倒
        DiagUp,             // 浮空
        Hold,               // 抓住
        AirHit,             // 浮空追击
        DownHit,            // 倒地追击
        FallDown,           // 跌倒
    }

    public enum RaceType
    {
        Enemy = 0,
        TeamMember,
        Self,
        Parent,
        Child,
    }

    public enum HitResultType
    {
        /// <summary> 一般受击</summary>
        StandHit,           // 
        /// <summary> 击飞</summary>
        KnockOut,           // 
        /// <summary> 击退</summary>
        KnockBack,          // 
        /// <summary> 击倒</summary>
        KnockDown,          // 
        /// <summary> 浮空</summary>
        DiagUp,             // 
        /// <summary> 抓住</summary>
        Hold,               // 
        /// <summary> 浮空追击</summary>
        AirHit,             // 
        /// <summary> <倒地追击/summary>
        DownHit,            // 
        /// <summary> 跌倒</summary>
        FallDown,           // 
    }

    public enum DamageType
    {
        Normal,
        Special,
        Mix,
    }
    public enum WeaponType
    {
        None = 0,           // 无
        Metal,              // 金属
        Chain,              // 链状金属
        Stone,              // 石材
        Bone,               // 骨质
        Wood,               // 木质
        Flesh,              // 肉身
        Fluid,              // 流质肉体
        Gas,                // 气体
        Sword,              // 剑
        Broadsword,         // 刀
        Axe,                // 斧头
        Knife,              // 匕首
        Gun,                // 枪
    }
    public enum MaterialType
    {
        None = 0,           // 无
        Metal,              // 金属
        Chain,              // 链状金属
        Stone,              // 石材
        Bone,               // 骨质
        Wood,               // 木质
        Flesh,              // 肉身
        Fluid,              // 流质肉体
        Gas,                // 气体
    };
    public enum HitDefnitionFramType
    {
        CuboidType              = 0,  //长方体
        CylinderType            = 1,  //圆柱体
        RingType                = 2,  //圆环体
        SomatoType              = 3,  //受击体
        FanType                 = 4,  //扇形体
    };

    /// <summary>
    /// 帧事件 EventProcesser
    /// </summary>
    public enum EventType
    {
        None = 0,
        /// <summary>播放特效</summary>
        PlayEffect,         
        /// <summary>播放动画</summary>
        PlayAnim,            	
        /// <summary> 播放音效</summary>
        PlaySound,          	
        /// <summary>打开状态</summary>
        StatusOn,           
        /// <summary>关闭状态</summary>
        StatusOff,           
        /// <summary>打开连接动作</summary>
        LinkActionOn,        
        /// <summary>关闭连接动作</summary>
        LinkActionOff,       
        /// <summary>设定位移速度</summary>
        SetVelocity,         
        /// <summary>设定位移速度X</summary>
        SetVelocity_X,       
        /// <summary>设定位移速度Y</summary>
        SetVelocity_Y,       
        /// <summary>设定位移速度Z</summary>
        SetVelocity_Z,       
        /// <summary> 设定方向</summary>
        SetDirection,       
        /// <summary>执行脚本</summary>
        ExeScript,          
        /// <summary>设置重力</summary>
        SetGravity,          
        /// <summary>设置高度状态</summary>
        SetHeightStatus,     
        /// <summary>设置动作状态</summary>
        SetActionStatus,    
        /// <summary>设置片段状态</summary>
        SetFragmentStatus,  
        /// <summary>添加单位</summary>
        AddUnit,            // 
        /// <summary>自我毁灭</summary>
        RemoveMyself,        
        /// <summary>掉落宝物</summary>
        DropItem,           // 
        /// <summary>设置颜色</summary>
        SetColor,           // 
        /// <summary>拾取</summary>
        PickUp,             // 
        /// <summary>摄像机</summary>
        CameraEffect,       // 
        /// <summary>列举目标</summary>
        ListTargets,        // 
        /// <summary> 清除目标</summary>
        ClearTargets,       //
        /// <summary>面向目标</summary>
        FaceTargets,        // 
        /// <summary> 开启刀光</summary>
        EnableWeaponTrail,  //
        /// <summary> 关闭刀光</summary>
        DisableWeaponTrail, //
        /// <summary>设置攻击定义的速度</summary>
        SetHitDefVelocity,  // 
        /// <summary>关闭所有的攻击定义</summary>
        ClearHitDefs,       // 
        /// <summary>设置自定义变量</summary>
        SetVariable,        // 
        /// <summary>调整自定义变量</summary>
        AdjustVarible,      // 
        /// <summary>幻影特效</summary>
        GhostEffect,        // 
        /// <summary>攻击选中的目标</summary>
        AttackTargets,      // 
        /// <summary>移动到目标</summary>
        GoToTargets,        // 
        /// <summary>召唤</summary>
        SummonUnit,         // 
        /// <summary>控制召唤怪</summary>
        ControlUnit,        //
        /// <summary>动作等级</summary>
        ActionLevel,        //
        /// <summary>受击转向</summary>
        RotateOnHit,        //
        /// <summary>产生碰撞</summary>
        HasCollision,       //
        /// <summary>标动画</summary>
        UnitAction,         //目
        /// <summary></summary>
        RangeAction,
        /// <summary></summary>
        Chat,
        Count,
    }

    public enum HitDamageType
    {
        LightDamageType = 0,            //轻击
        MediumDamageType = 1,            //中击
        HeavyDamageType = 2,            //重击
        KillShotDamageType = 3,            //绝招
    }
    public enum InputType
    {
        Click = 0,          // 单击（键盘：按下瞬间）
        DoubleClick,        // 双击（键盘：双击瞬间）
        Press,              // 长按（键盘）
        Release,            // 松开（键盘：松开瞬间）
        Pressing,           // 按下（键盘的状态）
        Releasing,          // 松开（键盘的状态）
    }

    [Flags]
    public enum HeightStatusFlag
    {
        None = 0,
        /// <summary>站立 </summary>
        Stand = 1,      //
        /// <summary> 地面</summary>
        Ground = 2,     //
        /// <summary> 低空</summary>
        LowAir = 4,     //
        /// <summary> 高空</summary>
        HighAir = 8,    //
        /// <summary>被抓 </summary>
        Hold = 16,      //
    }

    /// <summary>
    /// 动作状态
    /// </summary>
    public enum EActionState
    {
        Idle = 0,       //  待机
        Move = 1,       //  移动
        Attack = 2,     //  攻击
        Hit = 3,        //  受伤
        Defense = 4,    //  防御
    };
    public enum EGameMode
    {
        GMDebug,
        GMRelease
    };
    public enum EServerIpList
    {
        Local = 0,
        Lan_04 = 1,
        China = 4,
        Public = 5,
        F = 6
    }

    public enum EPlatform
    {
        Device = 0,
        GameCenter = 1,
    }


    /// <summary>
    /// 选择型目标类型框
    /// </summary>
    public enum ListTargetFrameType
    {
        /// <summary>
        /// 立方体目标选择框
        /// </summary>
        Cuboid_ListType = 0,
        /// <summary>
        /// 扇形目标选择框
        /// </summary>
       Fan_ListType = 1,
    }

    public enum ListTargetMode
    {
        MinDistance = 0,
        MinAngle,
        Random,
    }
    public class AniName
    {
        public const string STAND = "stand";
        public const string STANDFIGHT = "standfight";
        public const string IDLE = "Idle";
        public const string ENTER = "show";
        public const string RUSH = "jumpf";
        public const string JUMPB = "jumpb";
        public const string RUN = "run";
        public const string DEAD = "Dead";
        public const string FALL = "death";
        public const string FLOAT = "floata";
        public const string FLOATB = "floatb";
        public const string FLOATC = "floatc";
        public const string WALK = "walk";
        public const string LIFE = "life";
        public const string DIZZY = "dizzy";
        public const string WIN = "win";
        public const string DISPLAY = "display02";
        public const string INTO = "display01";
    }

    public class CommonAction
    {
        public const string IdleInCity = "C0000";   
        public const string RunInCity = "C0001";    
        public const string LevelUpInCity = "C0002"; 
        public const string ShowInCity = "N0000";

        public const string IdleInFight = "B0000"; 
        public const string RunInFight = "B0001";  

        public const string OnGround = "B0002";
        public const string Death = "B0003";         //  
        public const string StandUp = "B0004";       //  倒地起身
        public const string OnHurt = "B0005";
        public const string Attack_1 = "B0006";
        public const string Attack_2 = "B0007";
        public const string Attack_3 = "B0008";
        public const string Skill_1 = "B0009";
        public const string Skill_2 = "B0010";
        public const string Skill_3 = "B0011";
        public const string Skill_4 = "B0012";
        public const string Victory = "B0013";
        public const string Shift = "B0014";

        public const string Bounce = "H0000";       // 
        public const string VictoryIdle = "H3001";
        public const string Elude = "N0020";
        public const string Walk = "N0020";         //  走
        public const string Revive = "H0100";       //  复活

    }

    /// <summary>
    /// 默认序列ID
    /// </summary>
    public class ECommonAction
    {
        public const string StandDeath = "H1040";
        public const string DownDeath = "H1041";
        public const string StartupAction = "N0000";
        public const string StartupActionInstance = "N0000";

        #region hit result on ground 
        //受击结果:地面
        public const string FloorDownHit    = "H0070";    //受到倒地追击攻击时
        public const string FloorFallDown   = "H0031";    //受到倒地攻击时
        public const string FloorDiagUp     = "H0030";    //受到浮空攻击时

        public const string FloorAirHit     = "H0070";    //受到浮空追击攻击时
        public const string FloorKnockDown  = "H0070";    //受到击倒攻击时
        public const string FloorKnockOut   = "H0010";    //受到击飞攻击时

        public const string FloorKnockBack  = "H0070";    //受到击退攻击时
        public const string FloorStandHit   = "H0070";    //站立受击时
        public const string FloorHold       = "H0050";    //抓住攻击时
        #endregion

        #region hit result in area
        //受击结果:空中
        public const string AirDownHit      = "H0060";   //受到倒地追击攻击时的动作
        public const string AirFallDown     = "H0031";   //受到倒地攻击时的动作
        public const string AirDiagUp       = "H0030";   //受到浮空攻击时动作

        public const string AirAirHit       = "H0060";   //受到浮空追击攻击时动作
        public const string AirKnockDown    = "H0040";   //受到击倒攻击时动作
        public const string AirKnockOut     = "H0010";   //搜道击飞时动作

        public const string AirKnockBack    = "H0010";   //受到击退攻击时动作
        public const string AirStandHit     = "H0060";   //站立受击时动作
        public const string AirHold         = "H0050";   //受到抓住攻击时动作
        #endregion

        #region hit result in stand
        //受击结果:站立
        public const string StandDownHit    = "H0070";   //受到倒地追击时动作
        public const string StandFallDown   = "H0031";   //受到倒地攻击时动作
        public const string StandDiagUp     = "H0030";   //受到浮空攻击时动作

        public const string StandAirHit     = "H0060";   //受到浮空追击时动作
        public const string StandKnockDown  = "H0040";   //受到击倒攻击时
        public const string StandKnockOut   = "H0010";   //受到击飞攻击时动作

        public const string StandKnockBack  = "H0020";   //受到击退攻击时动作
        public const string StandStandHit   = "H0000";   //站立受击动作
        public const string StandHold       = "H0050";   //被抓动作
        #endregion
    }
}

